// 全局模式：统一链接
axios.defaults.baseURL = 'http://123.57.109.30:3007'

// 添加请求拦截器
axios.interceptors.request.use(function (config) {
    // 在发送之前做点什么
    if (config.url.startsWith('/my')) { //以...开头的字符串符合就原地返回true
        config.headers['Authorization'] = sessionStorage.getItem('token')
    }
    return config;
}, function (error) {
    // 对请求错误做些什么
    return Promise.reject(error)
}
)

// 响应拦截器 在成功触发回调函数之前 搞事情 - 统一有弹窗
axios.interceptors.response.use(function (response) {
    // 对响应数据做点什么
    var layer = layui.layer;
    layer.msg(response.data.message, { id: '唯一' })
    // 响应拦截器 判断：防止错误的信息 进入到逻辑页面的成功的回调函数中
    if (response.data.status == 1) {
        return Promise.reject(response.data.message);

    }
    return response;
}, function (error) {
    // 对响应错误做点什么
    if (error.response.status == 403) { // 403请求状态失败 - 403也是后台返回的状态玛
        // (身份验证失败)
        // 找个弹窗提示用户 - 提示消息用的后台返回的消息 
        layer.msg(error.response.data.message, { // 为了保证弹窗消失以后再跳转(给用户一点时间看看弹窗的内容)
            icon: 2, end: function () {
                window.parent.location.href = '/login.html'
            }
        })
        return Promise.reject(error.response.data.message);
    }
    return Promise.reject(error);
});

// 注册功能 封装         // const只能定义一次 不能重名
const RegisterApi = (arg, fn) => axios({  // 传入两个参数 第二个为函数体
    url: '/api/reguser',
    method: 'POST',
    data: arg
}).then(fn)

// 登录功能 封装
const LoginApi = (arg, fn) => axios({
    url: '/api/login',
    method: 'POST',
    data: arg
}).then(fn)

// 分类 - 新增 封装
const addCateApi = (arg, fn) => axios({
    url: '/my/article/addcates',
    method: 'POST',
    data: arg,
    headers: { 'Authorization': sessionStorage.getItem('token') }
}).then(fn)

// 分类列表获取
const cateListApi = (arg, fn) => axios({
    url: '/my/article/cates',
    method: 'GET',
    // headers: { 'Authorization': sessionStorage.getItem('token') }
}).then(fn)

// 删除功能 封装
const delAPi = (arg, fn) => axios({
    url: '/my/article/deletecate/' + arg.id, // 第三种传参方式 在url路径后面 直接拼接
    method: 'GET',
    // headers: { 'Authorization': sessionStorage.getItem('token') }

}).then(fn)

// 分类页面 修改
const upCateApi = (arg, fn) => axios({
    url: '/my/article/updatecate',
    method: 'POST',
    data: arg,
    // headers: { 'Authorization': sessionStorage.getItem('token') }
}).then(fn)


const getUsernfoAPi = (arg, fn) => axios({
    url: '/my/userinfo',
    method: 'GET',
}).then(fn)

const UserInfoAPi = (arg, fn) => axios({
    url: '/my/userinfo',
    method: 'POST',
    data: arg,
}).then(fn)

// 重置密码
const rePassAPi = (arg, fn) => axios({
    url: '/my/updatepwd',
    method: 'POST',
    data: arg,
}).then(fn)